<?php
//Ultima verificacion: 14-10-2014 ; 21-11-2014 ; 04-03-2015
class M_asistencia extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener las asistencias activas (1)
	function buscarActivos($restriccion=null){
		$consulta = $this->db->query("SELECT asistencia.*,
											 (SELECT nombre FROM tipoasistencia WHERE tipoasistencia.idTipoAsistencia=asistencia.idTipoAsistencia AND tipoasistencia.estado<>-1 LIMIT 1) AS tipoAsistencia,
											 DATE_FORMAT(asistencia.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											 DATE_FORMAT(asistencia.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada,
											 DATE_FORMAT(asistencia.fecha,'%d/%m/%Y') AS fechaFormateada
									  FROM asistencia
									  WHERE asistencia.estado=1 $restriccion
									  ORDER BY asistencia.fecha DESC");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar una toma de asistencia
	function eliminar($idAsistencia=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `asistencia`
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `asistencia`.`idAsistencia` = " . $this->db->escape($idAsistencia) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear una toma de asistencia
	function crear($idDivision=null, $idTipoAsistencia=null, $fecha=null, $descripcion=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `asistencia` (`idAsistencia`,`idDivision`,`idTipoAsistencia`,`fecha`,`descripcion`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
										           (NULL,".$this->db->escape($idDivision).",".$this->db->escape($idTipoAsistencia).",".$this->db->escape($fecha).",".$this->db->escape($descripcion).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver una toma de asistencia en particular usada generalmente en el formulario de modificar
	function get($idAsistencia=null){
		$consulta = $this->db->query("SELECT asistencia.*, division.nombre AS division, curso.nombre AS curso, 
											DATE_FORMAT(asistencia.fecha,'%d-%m-%Y') AS fechaFormateada
									  FROM asistencia, division, curso
									  WHERE asistencia.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND
											asistencia.estado<>-1 AND 
											division.estado<>-1 AND 
											curso.estado<>-1 AND 
											asistencia.idAsistencia=".$this->db->escape($idAsistencia)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver una toma de asistencia en particular usada al tomar asistencia
	function get2($idDivision=null, $idTipoAsistencia=null, $fecha=null){
		$consulta = $this->db->query("SELECT asistencia.*
									  FROM asistencia
									  WHERE asistencia.estado<>-1 AND
											asistencia.idDivision=".$this->db->escape($idDivision)." AND 
											asistencia.idTipoAsistencia=".$this->db->escape($idTipoAsistencia)." AND 
											asistencia.fecha=".$this->db->escape($fecha)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver la toma de asistencia contigua a una en particular usada generalmente en el formulario de modificar
	function getContiguo($idAsistencia=null, $cant=null, $idDivision=null){
		//1
		if($idDivision != 0){
			do{
				$idAsistencia+=$cant;
				$consulta = $this->db->query("SELECT asistencia.*
											  FROM asistencia
											  WHERE asistencia.idAsistencia=".$this->db->escape($idAsistencia)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->idDivision != $idDivision);
		}
		
		//0
		if($idDivision == 0){
			do{
				$idAsistencia+=$cant;
				$consulta = $this->db->query("SELECT asistencia.*
											  FROM asistencia
											  WHERE asistencia.idAsistencia=".$this->db->escape($idAsistencia)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1');
		}
		
		return($consulta->row()->idAsistencia);
	}
	
	//Este metodo se utiliza para modificar una toma de asistencia
	function modificar($idAsistencia=null, $idTipoAsistencia=null, $fecha=null, $descripcion=null){
		$consulta = $this->db->query("UPDATE `asistencia`
									 SET `idTipoAsistencia` = ". $this->db->escape($idTipoAsistencia) .",
										 `fecha` = ". $this->db->escape($fecha) .",
										 `descripcion` = ". $this->db->escape($descripcion) ."
							         WHERE `asistencia`.`idAsistencia` = " . $this->db->escape($idAsistencia) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>